package com.ruoyi.project.module.groupProperty.mapper;

import com.ruoyi.project.module.groupProperty.domain.GroupProperty;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 配置组属性 数据层
 * 
 * @author ruoyi
 * @date 2018-11-10
 */
public interface GroupPropertyMapper 
{
	/**
     * 查询配置组属性信息
     * 
     * @param configGroupPropertyId 配置组属性ID
     * @return 配置组属性信息
     */
	public GroupProperty selectGroupPropertyById(Long configGroupPropertyId);
	
	/**
     * 查询配置组属性列表
     * 
     * @param groupProperty 配置组属性信息
     * @return 配置组属性集合
     */
	public List<GroupProperty> selectGroupPropertyList(GroupProperty groupProperty);
	
	/**
     * 新增配置组属性
     * 
     * @param groupProperty 配置组属性信息
     * @return 结果
     */
	public int insertGroupProperty(GroupProperty groupProperty);
	
	/**
     * 修改配置组属性
     * 
     * @param groupProperty 配置组属性信息
     * @return 结果
     */
	public int updateGroupProperty(GroupProperty groupProperty);
	
	/**
     * 删除配置组属性
     * 
     * @param configGroupPropertyId 配置组属性ID
     * @return 结果
     */
	public int deleteGroupPropertyById(Long configGroupPropertyId);
	
	/**
     * 批量删除配置组属性
     * 
     * @param configGroupPropertyIds 需要删除的数据ID
     * @return 结果
     */
	public int deleteGroupPropertyByIds(String[] configGroupPropertyIds);

	/**
	 * 获取排序最大值
	 * @param configGroupId
	 * @param parentId
	 * @return
	 */
	int maxOrderNum(@Param("configGroupId") Long configGroupId,@Param("parentId") Long parentId );

	int childSize(Integer parentId);


	/**
	 * 查询配置组属性列表,用于复制
	 *
	 * @param configGroupId
     * @param parentId
	 * @return 配置组属性集合
	 */
	public List<GroupProperty> selectGroupPropertyListByConfigGroupIdAndParentId(@Param("configGroupId") Long configGroupId,
																				 @Param("parentId") Long parentId);

	public List<GroupProperty> lookupGroupPropertyList(GroupProperty groupProperty);


	public List<GroupProperty> selectGroupPropertyListByParentId(@Param("parentId") Long parentId);


	List<GroupProperty> getReleaseGroupPropertyList(@Param("configGroupId") Long configGroupId,
													@Param("pushUpdate") Integer pushUpdate,
													@Param("parentId") Long parentId
	);


}